package com.liuqi.knet.remoting;

import io.netty.buffer.ByteBuf;
import java.io.IOException;

/**
 * 数据传输编解码器
 *
 * @author liuqi
 * @date 2024/12/17 17:25
 **/
public interface Codec {

    /**
     * 编码. 编码后往<code>buffer</code>中写入数据
     *
     * @param buffer
     * @param message
     * @throws IOException
     */
    void encode(ByteBuf buffer, Object message) throws IOException;

    /**
     * 解码. 从<code>buffer</code>中读取数据解码
     *
     * @param buffer
     * @return
     * @throws IOException
     */
    Object decode(ByteBuf buffer) throws IOException;

    /**
     * 解码结果集
     */
    enum DecodeResult {
        NEED_MORE_INPUT;    // 还需要继续读取通道消息
    }

}
